package communicate;

/**
 * 编写同步代码块和方法 并查看字节码
 * 
 * 代码块 通过 monitorenter monitorexit 这对命令修改 monitor
 * 方法 ACC_SYNCHRONIZED 标记这是个同步方法 本质上也是修改 monitor
 * 
 * @author insight
 * @since 2021/8/30
 */
public class SynchronizedTest {
    public static void main(String[] args) {
        // 4: monitorenter
        // 5: aload_1
        // 6: monitorexit
        synchronized (SynchronizedTest.class) {}
        
        method();
    }
    
    /**
     * flags: (0x0029) ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
     */
    public static synchronized void method() {}
}